package ClassAndObject.Object_Objects;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

/*
    java.lang.Object类
    Object是类层次结构的根（最顶层）类。每个类都使用Object作为超（父）类
    所有对象（包括数组）都实现这个类的方法

*/
public class Demo01ToString {
    public static void main(String[] args) {
        /*
        Person类默认继承了Object类，所以可以使用Object类中的toString方法

        */
        Person p = new Person();
        p.setName("杨双洋");
        p.setAge(18);
        String s = p.toString();


        //直接打印对象的名字，其实就是调用对象的toString方法
        System.out.println(s);//=p.toString();ClassAndObject.Object.Person@1d44bcfa
        System.out.println(p);//ClassAndObject.Object.Person@1d44bcfa

        /*
        看一个类是否重写了toString方法，直接打印这个类对应对象的名字即可
        如果没有重写toString方法，那么打印的就是对象的地址值（默认）
        如果重写了toString方法，那么就是按重写的打印
        */

        Random random = new Random();
        System.out.println(random);

        //可以看到Scanner不是地址值，重写了toString方法
        Scanner scanner = new Scanner(System.in);
        System.out.println(scanner);

        //ArrayList 也重写了 [1, 2]
        ArrayList<Object> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        System.out.println(list);


    }
}
